package com.itheima.reggie.common;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.itheima.reggie.entity.Employee;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;

/*
    赋值处理器
 */
@Component
@Slf4j
public class MyMetaObjecthandler implements MetaObjectHandler {
    /*
        插入操作执行的时候，自动执行
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        //四个属性都要自动赋值
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime",LocalDateTime.now());
        /*
            如何获取到当前登录的用户的id？
            ThreadLocal本地线程对象 解决这个问题。
         */
        metaObject.setValue("createUser",BaseContext.get());
        metaObject.setValue("updateUser",BaseContext.get());
    }

    /*
        修改操作执行的执行的时候，自动执行
    */
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("MyMetaObjecthandler类中此时的线程id为：{}", Thread.currentThread().getId());
        //2个属性要自动赋值
        metaObject.setValue("updateTime",LocalDateTime.now());
        metaObject.setValue("updateUser",BaseContext.get());
    }
}
